﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using WebSite.DAL;
using WebSite.Domain;

namespace WebSite.NovoCaso
{
    public partial class NovoCaso : System.Web.UI.Page
    {
        static List<Control> dynamicControls = new List<Control>();   

        protected void Page_Load(object sender, EventArgs e)
        {
            AtualizarPanelComControles();
            if (!IsPostBack)
            {
                dynamicControls.Clear();
                pnItensDinamicos.Controls.Clear();
                ProntuarioDAO.ListarProntuarios(lbModelosProntuario.Items);              
            }
        }

        protected void lbModelosProntuario_OnSelectedIndexChanged(object sender, EventArgs e)
        {            
            dynamicControls.Clear();
            pnItensDinamicos.Controls.Clear();
            pnOutraSugestao.Visible = true;
                        
            List<ItemProntuario> itensProntuario = new List<ItemProntuario>();
            ItemProntuarioDAO.BuscarItensDeProntuario(Convert.ToInt32(lbModelosProntuario.SelectedItem.Value), itensProntuario);

            foreach(ItemProntuario ip in itensProntuario)
            {
                dynamicControls.Add(new LiteralControl(ip.nome));
                if (ip.tipoContinuo == 1)
                {                    
                    TextBox tx = new TextBox();
                    if (tx is TextBox)
                    {
                        tx.ID = ip.idItemProntuario.ToString();
                        dynamicControls.Add(tx);
                        dynamicControls.Add(new LiteralControl("<br>"));
                    }
                }
                else
                {
                    DropDownList ddl = new DropDownList();
                    if (ddl is DropDownList)
                    {
                        List<RespostaDiscreta> respostasDiscretas;
                        ddl.ID = ip.idItemProntuario.ToString();                        

                        respostasDiscretas = RespostaDiscretaDAO.BuscarRespostaDiscreta(Convert.ToInt32(ip.idItemProntuario));
                        foreach (RespostaDiscreta rd in respostasDiscretas)
                        {
                            ddl.Items.Add(new ListItem(rd.nome, rd.idRespostaDiscreta.ToString()));
                        }

                        dynamicControls.Add(ddl);
                        dynamicControls.Add(new LiteralControl("<br>"));
                    }
                } 
            }

            //Busca Pelas Doencas
            List<Doenca> doencas = DoencaDAO.BuscarDoencasPorProntuario(Convert.ToInt32(lbModelosProntuario.SelectedItem.Value));
            if (doencas != null)
            {

                pnDoencasCadastradas.Visible = true;
                foreach (Doenca item in doencas)
                {
                    lblDoencasCadastradas.Items.Add(new ListItem(item.nome, item.idDoenca.ToString()));
                }
            }
            else
            {
                pnDoencasCadastradas.Visible = false;
            }
            

            AtualizarPanelComControles();
        }


        private void CriarNovoCaso()
        {
            //Cria um Novo Caso para o Paciente  
            CasoPaciente cp = new CasoPaciente
                            (Convert.ToInt32(Request["idPaciente"].ToString()),        //Paciente passado pela URL
                             Convert.ToInt32(lbModelosProntuario.SelectedItem.Value)); //Modelo de Prontuário selecionado na ListBox

            CasoPacienteDAO.criarCasoPaciente(cp);

     
            //Cadastra as respostas para esse caso
            foreach (Control c in pnItensDinamicos.Controls)
            {           
                RespostaProntuario rp = new RespostaProntuario();                
                if (c is TextBox)
                {
                    rp.RespostaContinua = ((TextBox)c).Text;                    
                    rp.idItemProntuario = Convert.ToInt32(c.ID);
                    RespostaProntuarioDAO.CadastrarRespostaContinua(rp);                
                }
                else if(c is DropDownList)
                {
                    rp.idRepostaDiscreta = Convert.ToInt32(((DropDownList)c).SelectedItem.Value);
                    rp.idItemProntuario = Convert.ToInt32(c.ID);
                    RespostaProntuarioDAO.CadastrarRespostaDiscreta(rp);                
                }      
            }

            //CadastraDoencaParaCaso
            
        }

        private void AtualizarPanelComControles()
        {
            foreach (Control c in dynamicControls)
            {
                pnItensDinamicos.Controls.Add(c);
            }
        }


        protected void btnCadastrar_OnClick(object sender, EventArgs e)
        {
            //tratarObjetosVazios
            //Atributos nulos, setar como ?

            CriarNovoCaso();
            Response.Redirect("CasosPaciente.aspx");

        }



        protected void btnCadastrarNovoDiagnostico_OnClick(object sender, EventArgs e)
        {
            if (txtNovoDiagnostico.Text != string.Empty)
            {
                
                Doenca doenca = new Doenca();
                doenca.nome = txtNovoDiagnostico.Text;
                doenca.idProntuario = Convert.ToInt32(lbModelosProntuario.SelectedItem.Value);
                doenca.descricao = " ";

                DoencaDAO.CadastrarDoenca(doenca);      
          
                //Gravar Ultima doença cadastrada nos Itens
                //lblDoencasCadastradas.Items.Add(new ListItem(doenca.nome,DoencaDAO.BuscarUltimaDoenca().idDoenca.ToString()));
            }
        }

    }
}